package com.chinaisafe.user.service;

import com.chinaisafe.user.entity.SysUserRole;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chinaisafe.user.vo.request.SysUserRoleReqVO;
import com.chinaisafe.user.vo.response.SysUserRoleRespVO;

import java.util.List;

/**
 * SysUserRoleService
 * Description：用户角色服务类
 *
 * @author xuefu.shu
 * @date 2024-07-13 16:53:56
 */
public interface SysUserRoleService extends IService<SysUserRole> {
     /**
      * 根据条件获取用户角色分页列表
      * @param sysUserRoleReqVO 筛选参数
      * @return Page<SysUserRoleRespVO> 分页对象
      * @author xuefu.shu
      * @date  2024-07-13 16:53:56
      */
     IPage<SysUserRoleRespVO> getPageList(SysUserRoleReqVO sysUserRoleReqVO);

     /**
      * 新增用户角色
      * @param sysUserRoleReqVO 新增参数
      * @return SysUserRoleRespVO 响应参数
      * @author xuefu.shu
      * @date 2024-07-13 16:53:56
      */
      SysUserRoleRespVO add(SysUserRoleReqVO sysUserRoleReqVO);

     /**
      * 根据id编辑用户角色
      * @param sysUserRoleReqVO 修改参数
      * @return SysUserRoleRespVO 响应参数
      * @author xuefu.shu
      * @date 2024-07-13 16:53:56
      */
      SysUserRoleRespVO update(SysUserRoleReqVO sysUserRoleReqVO);

     /**
      * 新增或修改用户角色
      * @param sysUserRoleReqVO 编辑修改参数
      * @return SysUserRoleRespVO 响应参数
      * @author xuefu.shu
      * @date 2024-07-13 16:53:56
      */
      SysUserRoleRespVO addOrUpdate(SysUserRoleReqVO sysUserRoleReqVO);

     /**
      *  根据id获取用户角色详情信息
      * @param sysUserRoleId 数据id
      * @return SysUserRoleRespVO 响应参数
      * @author xuefu.shu
      * @date 2024-07-13 16:53:56
      */
      SysUserRoleRespVO getDetailById(Long sysUserRoleId);

     /**
      * 根据id删除用户角色
      * @param sysUserRoleIds id数组
      * @author xuefu.shu
      * @date 2024-07-13 16:53:56
      */
     void deleteByIds(Long[] sysUserRoleIds);

    /**
     * 查询用户角色
     *
     * @param sysUserId
     * @return List<Long>
     * @author tby
     * @date 2024/7/15 17:46
     */
    List<Long> queryUserRole(Long sysUserId);

    /**
     * 查询用户权限
     *
     * @param sysUserId
     * @return List<String>
     * @author tby
     * @date 2024/7/16 10:10
     */
    List<String> queryUserPermission(Long sysUserId);
}
